//使用前先引用jquery、api和main.css
// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
var dateFormat = function(date, fmt) {//author: meizz
	if (date == null)
		return '';
	var o = {
		"M+" : date.getMonth() + 1, //月份
		"d+" : date.getDate(), //日
		"h+" : date.getHours(), //小时
		"m+" : date.getMinutes(), //分
		"s+" : date.getSeconds(), //秒
		"q+" : Math.floor((date.getMonth() + 3) / 3), //季度
		"S" : date.getMilliseconds() //毫秒
	};
	if (/(y+)/.test(fmt))
		fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
	for (var k in o)
	if (new RegExp("(" + k + ")").test(fmt))
		fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
	return fmt;
}
/**
 *获取当前时间
 */
var getCurrentDate = function(dateType) {
	var date = new Date()
	var datestr = dateFormat(date, dateType)
	return datestr
}

/**
 *把时间戳转为为普通日期格式
 */
function getLocalTime(nS) {
	if (nS == undefined || nS == null || nS == '') {
		return '';
	} else {
		Date.prototype.toLocaleString = function() {
			var year = this.getFullYear();
			var month = this.getMonth() + 1;
			var date = this.getDate();
			var hours = this.getHours();
			var minutes = this.getMinutes();

			if (Number(month) < 10) {
				month = '0' + month;
			}
			if (Number(date) < 10) {
				date = '0' + date;
			}
			if (Number(hours) < 10) {
				hours = '0' + hours;
			}
			if (Number(minutes) < 10) {
				minutes = '0' + minutes;
			}
			return year + "/" + month + "/" + date + ' ' + hours + ':' + minutes;
		};
		var unixTimestamp = new Date(nS);
		return unixTimestamp.toLocaleString();
	}
}


/**使用正则验证输入的是否是手机号 */
function checkPhone(str) {
	if (str == undefined || str == null || str == '') {
		return false;
	}
	var phoneReg = /^[1][1-9][0-9]{9}$/;
	//以1为开头;第二位可为1-9,中的任意一位；最后以0-9的9个整数结尾
	if (!phoneReg.test(str)) {
		return false;
	} else {
		return true;
	}
}

/**隐藏手机中间的信息*/
function phoneMiddleHide(phoneStr) {
	if (phoneStr == undefined || phoneStr == null || phoneStr == '') {
		return '';
	} else {
		return phoneStr.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
	}
}

// toFixed兼容方法
Number.prototype.toFixed = function(len) {
	if (len > 20 || len < 0) {
		throw new RangeError('toFixed() digits argument must be between 0 and 20');
	}
	// .123转为0.123
	var number = Number(this);
	if (isNaN(number) || number >= Math.pow(10, 21)) {
		return number.toString();
	}
	if ( typeof (len) == 'undefined' || len == 0) {
		return (Math.round(number)).toString();
	}
	var result = number.toString(), numberArr = result.split('.');

	if (numberArr.length < 2) {
		//整数的情况
		return padNum(result);
	}
	var intNum = numberArr[0], //整数部分
	deciNum = numberArr[1], //小数部分
	lastNum = deciNum.substr(len, 1);
	//最后一个数字

	if (deciNum.length == len) {
		//需要截取的长度等于当前长度
		return result;
	}
	if (deciNum.length < len) {
		//需要截取的长度大于当前长度 1.3.toFixed(2)
		return padNum(result)
	}
	//需要截取的长度小于当前长度，需要判断最后一位数字
	result = intNum + '.' + deciNum.substr(0, len);
	if (parseInt(lastNum, 10) >= 5) {
		//最后一位数字大于5，要进位
		var times = Math.pow(10, len);
		//需要放大的倍数
		var changedInt = Number(result.replace('.', ''));
		//截取后转为整数
		changedInt++;
		//整数进位
		changedInt /= times;
		//整数转为小数，注：有可能还是整数
		result = padNum(changedInt + '');
	}
	return result;
	//对数字末尾加0
	function padNum(num) {
		var dotPos = num.indexOf('.');
		if (dotPos === -1) {
			//整数的情况
			num += '.';
			for (var i = 0; i < len; i++) {
				num += '0';
			}
			return num;
		} else {
			//小数的情况
			var need = len - (num.length - dotPos - 1);
			for (var j = 0; j < need; j++) {
				num += '0';
			}
			return num;
		}
	}

}
/**
 *四舍五入
 * number数量
 * decimalNumber 保留多少位小数,默认0
 */
var _toFixed = function(sourceNumber, decimalNumber) {
	if (sourceNumber == undefined || sourceNumber == null || sourceNumber == '' || sourceNumber == 0) {
		return 0;
	}
	if (decimalNumber == undefined || decimalNumber == null || decimalNumber == '') {
		decimalNumber = 0;
	}
	return sourceNumber.toFixed(decimalNumber);
}
//检查是否是json对象，如果不是就转换成json对象并返回
var checkIsJsonObj = function(data) {
	if ( typeof data == 'object' && data) {
		//如果是json对象,不用做处理
		return data;
	} else {
		//如果是json字符串，则需要处理成json对象
		if (data != undefined && data != null && data != '') {
			var obj = eval('(' + data + ')');
			return obj;
		} else {
			return null;
		}
	}
};

function isArrayFn(value) {
	if ( typeof Array.isArray === "function") {
		return Array.isArray(value);
	} else {
		return Object.prototype.toString.call(value) === "[object Array]";
	}
}

function isObjectFn(value) {
	if ( typeof value == "object") {
		return true;
	} else {
		return false;
	}
}

/**
 *过滤键盘输入的表情(iOS10.2.1及之前的全部emoji表情，Android的表情因为比较多，如上面的正则有遗漏，可自行补充) 
 */
var filterKeyboardEmoji=function(contentStr){
	var regStr = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig;
	if(contentStr==undefined || contentStr==null || contentStr==''){
		return '';
	}else{
		if(regStr.test(contentStr)){
			contentStr=contentStr.replace(regStr,"");
 　　			return contentStr;
		}else{
			return contentStr;
		}
	}

}


/**
 *当前时间的前几天、前几周、前几个月、前几年的时间 
 * @param {Object} type
 * getBADateObj();            //当前时间
 * getBADateObj("day", -2);   //前两天的时间
 * getBADateObj("day", 2);    //后两天的时间
 * getBADateObj("month", -2); //前两个月的时间
 * getBADateObj("month", 2);  //后两个月的时间
 */
function getBADateObj(type,number) {
    var nowdate = new Date();
    switch (type) {
        case "day":   //取number天前、后的时间
            nowdate.setTime(nowdate.getTime() + (24 * 3600 * 1000) * number);
            break;
        case "week":  //取number周前、后的时间
            nowdate = new Date(nowdate + (7 * 24 * 3600 * 1000) * number);
            break;
        case "month":  //取number月前、后的时间
            nowdate.setMonth(nowdate.getMonth() + number);
            break;
        case "year":  //取number年前、后的时间
            nowdate.setFullYear(nowdate.getFullYear() + number);
            break;
    }
    return nowdate;
}